Validating nested complex models and collection types in Blazor
In this video we will discuss, validating nested complex models and collection types in Blazor.
Validating top-level model properties in Blazor
public class Employee
{
[Required]
public string FirstName { get; set; }
[Required]
public string LastName { get; set; }
}
To validate the top-level properties (FirstName and LastName) of Employee
class, we use DataAnnotationsValidator
component.
<EditForm Model="@Employee">
<DataAnnotationsValidator />
<InputText id="firstName" @bind-Value="EditEmployeeModel.FirstName" />
<ValidationMessage For="@(() => EditEmployeeModel.FirstName)" />
</EditForm>
However, DataAnnotationsValidator
component cannot be used to validate nested complex models and collection types.
public class Employee
{
[Required]
public string FirstName { get; set; }
[Required]
public string LastName { get; set; }
[ValidateComplexType]
public Department Department { get; set; }
}
public class Department
{
[Required]
public string DepartmentName { get; set; }
}
Department
property in the Employee
class is a complex type. To validate this use ObjectGraphDataAnnotationsValidator
instead of DataAnnotationsValidator
component. As the name implies, the ObjectGraphDataAnnotationsValidator
validates the entire object graph, including collection and complex-type properties.
<EditForm Model="@Employee">
<ObjectGraphDataAnnotationsValidator />
<InputText id="firstName" @bind-Value="EditEmployeeModel.FirstName" />
<ValidationMessage For="@(() => EditEmployeeModel.FirstName)" />
</EditForm>
The complex types in the model should be decorated with [ValidateComplexType]
attribute. In our example, Department
property in the Employee
class is decorated with this attribute.
Both ValidateComplexType
and ObjectGraphDataAnnotationsValidator
are in the nuget package Microsoft.AspNetCore.Components.DataAnnotations.Validation
© 2020 Pragimtech. All Rights Reserved.